package com.dfec.book.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dfec.book.entity.BookEntity;
import com.dfec.book.util.PageUtils;

import java.util.List;


/**
 * 图书服务类接口
 * @author tangrg
 * @email 1446232546@qq.com
 * @date 2025-06-2025/6/18 10:35:50
 */
public interface BookService extends IService<BookEntity> {



    /**
     * 分页查询图书
     * @param bookEntity 图书信息
     * @return 分页对象
     */
    PageUtils getBooksByPage(BookEntity bookEntity);


    /**
     * 添加图书
     * @param book 图书实体对象
     * @return 添加结果
     * @throws RuntimeException 如果图书名称已存在或类别ID无效
     */
    boolean addBook(BookEntity book);

    /**
     * 更新图书信息
     * @param book 更新后的图书实体对象
     * @return 更新结果
     * @throws RuntimeException 如果类别ID无效
     */
    boolean updateBook(BookEntity book);

    /**
     * 删除图书
     * @param bookId 图书ID
     * @return 删除结果
     * @throws RuntimeException 如果图书已被借出
     */
    boolean deleteBook(List<Integer> bookIds);

    /**
     * 根据ID获取图书
     * @param bookId 图书ID
     * @return 图书实体对象
     */
    BookEntity getBookById(Integer bookId);



    /**
     * 获取类别下的所有图书
     * @param categoryId 类别ID
     * @return 该类别下的图书列表
     */
    List<BookEntity> getBooksByCategory(Integer categoryId);



    /**
     * 更新图书借阅状态
     * @param bookId 图书ID
     * @param isBorrowed 借阅状态（true:已借出, false:未借出）
     * @return 更新结果
     * @throws RuntimeException 如果图书不存在
     */
    boolean updateBookBorrowStatus(Integer bookId, boolean isBorrowed);
}